package cn.stylefeng.guns.modular.business.frequency.orderfinishrecord.service;

import cn.stylefeng.guns.modular.business.frequency.orderfinish.model.param.*;
import cn.stylefeng.guns.modular.business.frequency.orderfinishrecord.entity.OrderFinishRecord;
import cn.stylefeng.guns.modular.business.frequency.orderlogistics.model.param.ErrorMsg;
import cn.stylefeng.guns.modular.business.frequency.ordersub.model.param.OrderDTO;
import cn.stylefeng.guns.modular.business.frequency.ordersub.model.result.PkgOrderFinishRecord;
import cn.stylefeng.guns.modular.business.frequency.ordersub.model.result.PkgOrderSub;
import cn.stylefeng.guns.modular.business.frequency.statistics.PkgOrderFinish;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 订单交付记录表 服务类
 *
 * @author yujie
 * @date 2023/05/09 17:16
 */
public interface OrderFinishRecordService extends IService<OrderFinishRecord> {

    boolean checkFinishAdd(OrderFinishRecordVO orderFinishRecordVO, ErrorMsg errorMsg);


    void finish(Long userId, OrderFinishRecordVO orderFinishRecordVO, Long tenantId);

    void changeFinancePaymentStatus(Long orderId);

    Page<PkgOrderFinish> getFinishOverListPage(Page page, FinishRecordDTO orderDTO);

    PkgOrderFinishRecord getPkgOrderFinishRecordDetail(String id);

    List<PkgOrderSub> getPkgOrderFinishRecordDetail(FinishRecordContractVO finishRecordContractVO);

    Page getWaitFinishListPage(Page page, OrderDTO orderDTO);

    boolean checkLevelFinish(OrderFinishRecordVO orderFinishRecordVO, ErrorMsg errorMsg);

    void levelFinish(OrderFinishRecordVO orderFinishRecordVO);

    List<String> getOrderFinishPayImage(String orderId);

    void reFinish(Long orderId);

    void reLevelFinish(Long orderId);
}